﻿//using System;
//using System.Threading;
//using ECSBase.Component;
//using ECSBase.Component.MaskRelated;
//using ECSBase.System;

//namespace ECSBase
//{


//    class Program
//    {
//        static void Main(string[] args)
//        {
//            //Console.WriteLine("ECSBase test");

//            //EntityAdmin world = new EntityAdmin();//生成一个世界

//            //Entity entity = world.CreateEntity();//申请一个实体
//            //int newId = entity.EntityID;
//            ////Entity entity = world.GetEntity(newId);//获取到我的实体
//            //entity.AddComponent<PositionComponent>();//给他添加一个组件

//            //entity.GetComponent<PositionComponent>().x = 1;
//            //entity.GetComponent<PositionComponent>().y = 1;//定义一下组件的值

//            //var cb = entity.GetComponent<PositionComponent>();
//            //cb.z = 1;



//            //Entity final = world.GetEntity(newId);

//            //Console.WriteLine(string.Format("{0} \n{1}",
//            //    entity.GetComponent<PositionComponent>().ToString(),
//            //    final.GetComponent<PositionComponent>().ToString())
//            //   );
//            //Console.WriteLine(world.GetEntity(newId).GetComponent<PositionComponent>());

//            //world.AddSystem<ChangePositionSystem>();
//            //world.UpdateOnce();
//            //Console.WriteLine(world.GetEntity(newId).GetComponent<PositionComponent>());
//            ECSWorld.CreateEntity();
//            var res = ECSWorld.CreateEntity().AddComponent<PositionComponent>().Init(1, 2, 3)
//                .entity.GetComponent<PositionComponent>().ToString();
//            Console.WriteLine(res);
//            ECSWorld.AddSystem<ChangePositionSystem>();

//            //ECSWorld.UpdateOnce();
//            Thread UpdateThread = new Thread(ECSWorld.UpdateOnce);
//            UpdateThread.Start();
//            UpdateThread.Join(1000);

//            Thread.Sleep(1);//其实没有关系的！因为没有特殊情况的话并不会强制要求等待更新的说
//            res =
//                ECSWorld.GetEntities(ECSWorld.DefaultMaskContainer[typeof(PositionComponent)])[0]
//                .GetComponent<PositionComponent>().ToString();
//            Console.WriteLine("After Update:" + res);
//        }
//    }
//}